package com.dhsc.service.impl.ywjk.qywjh.jhmxxx;

import java.util.List;

import com.dhsc.domain.jkzx.ywjk.qywjh.jhmxxx.TjkYclxClsmVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.dhsc.domain.jkzx.ywjk.qywjh.JsptInfoKhVo;
import com.dhsc.domain.jkzx.ywjk.qywjh.TjkMxVo;
import com.dhsc.domain.jkzx.ywjk.qywjh.TjkYcmxtsVo;
import com.dhsc.domain.jkzx.ywjk.qywjh.jhlxwh.TjkYclbVo;
import com.dhsc.domain.jkzx.ywjk.qywjh.jhmxxx.TjkYclxVo;
import com.dhsc.domain.jkzx.ywjk.qywjh.jhmxxx.YcjlmxVo;
import com.dhsc.domain.yypt.LayuiTableVo;
import com.dhsc.domain.yypt.ResponseObject;
import com.dhsc.exception.MyException;
import com.dhsc.local.dao.ywjk.qywjh.jhmxxx.IJhmxxxDao;
import com.dhsc.service.ywjk.qywjh.jhmxxx.IJhmxxxService;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;

import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName: JhmxxxServiceImpl
 * @Description: 稽核明细信息
 * @Author: jwj
 * @Date: 2023/11/7 11:06
 */
@Service
@Slf4j
public class JhmxxxServiceImpl implements IJhmxxxService {

    @Autowired
    private IJhmxxxDao jhmxxxDao;

    @Override
    public ResponseObject queryWdYclx(YcjlmxVo ycjlmxVo) {
        ResponseObject obj = new ResponseObject();
        try{
            List<TjkYclxVo> list = jhmxxxDao.queryWdYclx(ycjlmxVo);
            obj.setData(list);
            obj.setStatus(200);
        }catch(Exception e){
            log.error("查询网点异常类型出错", e);
            throw new MyException("查询网点异常类型出错",e);
        }
        return obj;
    }

    @Override
    public ResponseObject queryWdYclb() {
        ResponseObject obj = new ResponseObject();
        try{
            List<TjkYclbVo> list = jhmxxxDao.queryWdYclb();
            obj.setData(list);
            obj.setStatus(200);
        }catch(Exception e){
            log.error("查询网点异常类别出错", e);
            throw new MyException("查询网点异常类别出错",e);
        }
        return obj;
    }

    @Override
    public LayuiTableVo queryWdYcInfo(YcjlmxVo ycjlmxVo) {
        LayuiTableVo obj = new LayuiTableVo();
        try{
            //不是导出时才分页
            if(ycjlmxVo.getExportFlag()!=1) {
                PageMethod.startPage(ycjlmxVo.getPage(), ycjlmxVo.getLimit());
            }
            List<YcjlmxVo> list = jhmxxxDao.queryWdYcInfo(ycjlmxVo);
            PageInfo<YcjlmxVo> pageInfo = new PageInfo<>(list);
            obj.setData(list);
            obj.setMsg("");
            obj.setCount(pageInfo.getTotal());
            obj.setCode(0);
        }catch(Exception e){
            log.error("查询网点异常记录信息出错", e);
            throw new MyException("查询网点异常记录信息出错",e);
        }
        return obj;
    }

    @Override
    public ResponseObject queryTjkYclxClsm(YcjlmxVo ycjlmxVo) {
        ResponseObject obj = new ResponseObject();
        try{
            TjkYclxClsmVo tjkYclxClsmVo = jhmxxxDao.queryTjkYclxClsm(ycjlmxVo.getYclx());
            obj.setData(tjkYclxClsmVo);
            obj.setStatus(200);
        }catch(Exception e){
            log.error("查询监控异常类型处理说明限制字段出错", e);
            throw new MyException("查询监控异常类型处理说明限制字段出错",e);
        }
        return obj;
    }

    @Transactional("localTransactionManager")
    @Override
    public ResponseObject yybjlts(YcjlmxVo ycjlmxVo) {
        ResponseObject obj = new ResponseObject();
        try{
            //将之前推送置为过期
            jhmxxxDao.updateYcmxtsZtgq(ycjlmxVo.getBh());
            //更新异常考核营业部
            jhmxxxDao.updateYckhYyb(ycjlmxVo);
            //新增推送营业部
            TjkYcmxtsVo tjkYcmxtsVo=new TjkYcmxtsVo();
            tjkYcmxtsVo.setTslx("2");
            tjkYcmxtsVo.setWbbh(ycjlmxVo.getBh());
            tjkYcmxtsVo.setJgdm(ycjlmxVo.getYyb());
            tjkYcmxtsVo.setZy(ycjlmxVo.getTssm());
            tjkYcmxtsVo.setUsername(ycjlmxVo.getUsername());
            jhmxxxDao.insertTjkYcmxts(tjkYcmxtsVo);
            obj.setStatus(200);
        }catch(Exception e){
            log.error("营业部推送出错", e);
            throw new MyException("营业部推送错误",e);
        }
        return obj;
    }

    @Override
    public LayuiTableVo queryGljcInfo(YcjlmxVo ycjlmxVo) {
        LayuiTableVo obj = new LayuiTableVo();
        try{
            PageMethod.startPage(ycjlmxVo.getPage(), ycjlmxVo.getLimit());
            List<YcjlmxVo> list = jhmxxxDao.queryGljcInfo(ycjlmxVo);
            PageInfo<YcjlmxVo> pageInfo = new PageInfo<>(list);
            obj.setData(list);
            obj.setMsg("");
            obj.setCount(pageInfo.getTotal());
            obj.setCode(0);
        }catch(Exception e){
            log.error("查询关联稽查信息出错", e);
            throw new MyException("查询关联稽查信息出错",e);
        }
        return obj;
    }

    @Transactional("localTransactionManager")
    @Override
    public ResponseObject handleWdycjl(YcjlmxVo ycjlmxVo) {
        ResponseObject obj = new ResponseObject();
        try{
            //退回
            if(ycjlmxVo.getType()==1){
                //更新处理状态、处理人及处理时间
                TjkMxVo tjkMxVo=new TjkMxVo();
                tjkMxVo.setShuserid(ycjlmxVo.getUserid()+"");
                tjkMxVo.setShusername(ycjlmxVo.getUsername());
                tjkMxVo.setBh(ycjlmxVo.getBh());
                tjkMxVo.setJlzt("04");
                jhmxxxDao.updateTjkMxZt(tjkMxVo);
                //纳入考核,则要新增tkh_jk_mx
                if(!"0".equals(ycjlmxVo.getKhbz())){
                    jhmxxxDao.insertTkhJkMxFromTjkMx(tjkMxVo);
                }
            }
            //处理中
            else if(ycjlmxVo.getType()==2){
                TjkMxVo tjkMxVo=new TjkMxVo();
                tjkMxVo.setUserid(ycjlmxVo.getUserid()+"");
                tjkMxVo.setUsername(ycjlmxVo.getUsername());
                tjkMxVo.setBh(ycjlmxVo.getBh());
                tjkMxVo.setJlzt("03");
                tjkMxVo.setClsm(ycjlmxVo.getClsm());
                jhmxxxDao.updateTjkMxZt(tjkMxVo);
            }
            //已处理
            else if(ycjlmxVo.getType()==3){
                //备注说明
                if("1".equals(ycjlmxVo.getClfs())){
                    //更新处理状态、处理人及处理时间
                    TjkMxVo tjkMxVo=new TjkMxVo();
                    tjkMxVo.setUserid(ycjlmxVo.getUserid()+"");
                    tjkMxVo.setUsername(ycjlmxVo.getUsername());
                    tjkMxVo.setBh(ycjlmxVo.getBh());
                    tjkMxVo.setJlzt("01");
                    tjkMxVo.setClsm(ycjlmxVo.getClsm());
                    jhmxxxDao.updateTjkMxZt(tjkMxVo);
                }
                //短信方式
                else if("2".equals(ycjlmxVo.getClfs())){
                    //新增jspt_info_kh记录
                    JsptInfoKhVo jsptInfoKhVo=new JsptInfoKhVo();
                    jsptInfoKhVo.setSjhm(ycjlmxVo.getKhh().substring(0,3));
                    jsptInfoKhVo.setXxnr(ycjlmxVo.getClsm());
                    jsptInfoKhVo.setUsername(ycjlmxVo.getUsername());
                    jsptInfoKhVo.setService_lx(ycjlmxVo.getYclx());
                    if("K1".equals(ycjlmxVo.getYclx())&&ycjlmxVo.getKhh().length()==15){
                        jhmxxxDao.insertJsptInfoKh(jsptInfoKhVo);
                    }else{
                        jsptInfoKhVo.setKhh(ycjlmxVo.getKhh());
                        jhmxxxDao.insertJsptInfoKhFromZqxtkhh(jsptInfoKhVo);
                    }
                    //更新处理状态、处理人及处理时间
                    TjkMxVo tjkMxVo=new TjkMxVo();
                    tjkMxVo.setUserid(ycjlmxVo.getUserid()+"");
                    tjkMxVo.setUsername(ycjlmxVo.getUsername());
                    tjkMxVo.setBh(ycjlmxVo.getBh());
                    tjkMxVo.setJlzt("01");
                    tjkMxVo.setClsm("已短信提醒["+ycjlmxVo.getClsm()+"]");
                    jhmxxxDao.updateTjkMxZt(tjkMxVo);
                }
            }
            obj.setStatus(200);
        }catch(Exception e){
            log.error("处理网点异常记录出错", e);
            throw new MyException("处理网点异常记录出错",e);
        }
        return obj;
    }
}
